package com.star.cat.persitent.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import com.star.cat.common.parse.DefaultKeyParse;
import com.star.cat.common.parse.DefaultResultParse;
import com.star.cat.common.parse.KeyParse;
import com.star.cat.common.parse.ResultParse;

/**
 * 持久化注解
 * @author liguangcai
 * @date 2018/08/31 10:39
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(value = {ElementType.METHOD, ElementType.TYPE})
public @interface Persistent {

	/**
	 * 缓存key
	 * @return
	 */
	String key() default "";

	/**
	 * 返回值类型
	 * @return
	 */
	Class<?>[] result() default Object.class;
	
	/**
	 * key解析器
	 * @return
	 */
	Class<? extends KeyParse> keyParse() default DefaultKeyParse.class;
	
	/**
	 * 返回结果解析器
	 * @return
	 */
	Class<? extends ResultParse> resultParse() default DefaultResultParse.class;
	
}
